package manager;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.*;

import InterfazRemota.InterfazRemota;
import NegocioVO.EmpleadoVO;
import NegocioVO.MesaVO;

public class AdministradorMesa
{	
	private InterfazRemota ir;
	private static AdministradorMesa instancia;
	
	public static AdministradorMesa getInstancia()
	{
		if(instancia==null)
			instancia = new AdministradorMesa();
		return instancia;
	}
	
	private AdministradorMesa()
	{
		try {
			ir = (InterfazRemota) Naming.lookup("TPO_Restaurante");
			
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}
	
	public  List<MesaVO> getMesas(String LocalId) {
		
		int j = 0;
		j = Integer.valueOf(LocalId);
		try {
			return ir.listarMesasDisponibles(j);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public  List<MesaVO> getMesasOcupadas(String LocalId) {
		
		int j = 0;
		j = Integer.valueOf(LocalId);
		try {
			return ir.listarMesasOcupadas(j);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public void abrirMesas(String[] categorias)
	{
		List<MesaVO> mesas = new ArrayList<MesaVO>();
		int j = 0;
		for (int i = 0; categorias.length - 1 >= i; i++)
		{
			
			MesaVO mesa = new MesaVO();
			j = Integer.valueOf(categorias[i]);
			 mesa.setIdMesa(j);
			 mesas.add(mesa);
		}
		try {
			ir.AbrirMesa(mesas);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public void cerrarMesas(String[] categorias)
	{
		List<MesaVO> mesas = new ArrayList<MesaVO>();
		int j = 0;
		for (int i = 0; categorias.length - 1 >= i; i++)
		{
			
			MesaVO mesa = new MesaVO();
			j = Integer.valueOf(categorias[i]);
			 mesa.setIdMesa(j);
			 mesas.add(mesa);
		}

			try {
				System.out.println("vamos a cerrar la mesa");
				ir.CerrarMesas(mesas);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

	public List<EmpleadoVO> getMozosLocal(String localId) {
		int j = 0;
		j = Integer.valueOf(localId);
		try {
			return ir.listarMozosDisponibles(j);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return null;
	}
}
